Often in networked settings, components, such as devices, services and/or applications, may desire providing each other with helper applications to assist them in interacting with each other. For instance, Java applets have been used in the World Wide Web to provide Web browsers with additional functionality. An applet is a small, self-contained computer program that usually performs a task as part of, or under the control of, a larger software application. Moreover, applets can be sent along with a Web page to a Web browser. Applets can provide browsers with additional functionality, such as enabling the browsers to display interactive animations and perform immediate calculations or other tasks without having to send a user request back to a server.
The use of such helper applications or transferable programs, such as the applets mentioned above, has helped extend the functionality of components in a variety of settings. On the other hand, increased dependence and use of these applets has created new problems. For instance, sometimes applets can hinder Web page loading or cause the browsers to crash. Heretofore, these transferable programs have been sent indiscriminately to clients, such as Web browsers, without first determining whether their intended recipients have the capability to execute these programs in the first place. Thus, components that do not have sufficient processing power, memory or appropriate supporting software versions are force-fed programs they simply cannot execute. With the advent of devices and services that can communicate in a fluid, ad-hoc manner, the role of transferrable executable programs may continue to increase thereby amplifying the problems noted above.